package org.megion.js.service;

import java.util.List;

import org.megion.js.model.Nodal;

/**
 * 
 * Общий интерфейс построения дерева
 *
 * @param <T>
 */
public interface TreeService<T extends Nodal<T>> {

	/**
	 * Получить дочерние узлы дерева для указанного узла включая сам узел. При
	 * этом количество уровней вложенности веток ограничивается указанным
	 * параметром maxLevel
	 */
	List<T> getChildNodes(Long nodeId, int maxLevel);

	/**
	 * Получить часть веток дерева необходимую для просмотра для указанного
	 * элемента дерева. При этом количество уровней вложенности веток
	 * ограничивается указанным параметром maxLevel
	 */
	List<T> getTreeScopeNodes(Long nodeId, int maxLevel);

	/**
	 * Получить часть веток дерева для узлов верхнего уровня. При этом
	 * количество уровней под веток ограничивается указанным параметром maxLevel
	 */
	List<T> getTreeRootNodes(int maxLevel);
}
